﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Nature;
using Nature.Numerics;
using System.Diagnostics;
using Nature.Numerics.Basic;

namespace Nature
{
    public interface IChemicalEquilibriumCalculator
    {
        /// <summary>
        /// Computes species equilibrium mole fractions (x) at fixed temperature and pressure
        /// </summary>
        /// <param name="temperature">Temperature [K] (input)</param>
        /// <param name="pressure">Pressure [Pa] (input)</param>
        /// <param name="x">Species mole fractions (input/output)</param>
        void TP(double temperature, double pressure, double[] x);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="temperature"></param>
        /// <param name="pressure"></param>
        /// <param name="x"></param>
        void TV(double temperature, ref double pressure, double[] x);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="temperature"></param>
        /// <param name="pressure"></param>
        /// <param name="x"></param>
        void HP(ref double temperature, double pressure, double[] x);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="temperature"></param>
        /// <param name="pressure"></param>
        /// <param name="x"></param>
        void UV(ref double temperature, ref double pressure, double[] x);
    }       
}
